package structures.stack;

import java.util.ArrayList;
import java.util.List;

public class ListStackDemo {
    public static void main(String[] args) {
        ListStack<Integer> integerArrayStack = new ListStack<>();
        integerArrayStack.push(1);
        integerArrayStack.push(2);
        integerArrayStack.push(3);
        integerArrayStack.push(4);
        integerArrayStack.push(5);

        System.out.println(integerArrayStack.pop());
        System.out.println("--------------------");
        integerArrayStack.list();
        System.out.println("--------------------");

    }
}

class ListStack<T> {
    private int index = -1;
    private List<T> mList;

    public ListStack() {
        mList = new ArrayList<>();
    }

    public boolean isEmpty() {
        return mList.size() == 0;
    }

    public void push(T data) {
        mList.add(data);
    }

    public T pop() {
        if (!isEmpty()) {
            T data = mList.get(mList.size() - 1);
            mList.remove(data);
            return data;
        }
        return null;
    }

    public void list() {
        while (!isEmpty()) {
            T data = pop();
            System.out.println(data);
        }
    }
}

